Generating simplified map shapes

ABSTRACT

In some implementations, a method performed by data processing apparatuses includes receiving map data that identifies a layout of physical objects within a physical area, identifying contiguous groups of the physical objects as composite objects, selecting bounding algorithms to use for generating graphical shapes for the composite objects, generating graphical shapes by applying the selected bounding algorithms to the composite objects, and testing the graphical shapes against one or more criteria. For candidate graphical shapes that fail a test, a new bounding algorithm can be selected and the generating and the testing can be repeated using the new bounding algorithm. A simplified graphical map can be output that represents the physical objects within the physical area using the graphical shapes.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/717,541, filed Dec. 17, 2019 which claims priority to U.S.Application Ser. No. 62/782,070, filed on Dec. 19, 2018. The disclosureof the prior application is considered part of the disclosure of thisapplication, and is incorporated in its entirety into this application.

TECHNICAL FIELD

This specification generally relates computer graphics, including thegeneration of graphical elements to represent shapes on a map within agraphical mapped space.

BACKGROUND

Digital maps of indoor and outdoor spaces have been used to help guideusers as they move around those spaces. For example, digital maps havebeen generated and presented in applications that permit a user to zoomand scroll around the map, and in some instances, to view the user'scurrent location superimposed at an appropriate location on the map.Items other than a user's current location can also be depicted on maps,such as presenting icons that identify places of interest for a user,such as stores, restaurants, and parks.

Digital maps often include graphical elements to represent items on themap. Graphical elements may include less than all visual details of thecorresponding item they represent. For example, a road on a map may besimply represented by a straight line instead of including all of thevisual details of the road, such as the road's color (e.g., asphaltcolor, concrete color), markings (e.g., center line), and other visualdetails. Graphical elements can range from simplistic (e.g., linerepresenting a road) to complex (e.g., polygon specially generated tocorrespond to item).

SUMMARY

This document generally describes computer systems, processes, programproducts, and devices generating simplified graphical elementsrepresenting objects for presentation on maps using various differentbounding algorithms for different objects. Simplified graphical elementsfor presentation on a map, also referred to as map shapes, canaccurately represent the contours of objects using a minimal set ofgraphical features, such as lines, corners, curves, and other graphicalfeatures. Simplified graphical elements can be useful in a variety ofcontexts, such as for depicting objects on a map with enough detail sothat users can readily navigate, orient, and locate items on the mapswith a minimal amount of effort. Graphical maps that include detailedgraphical elements representing objects, such as elements that includenear-real world details, can be difficult for users to navigate and useeffectively because the additional and superfluous map details maydistract users from the features that are at issue. Additionally,generating simplified graphical elements that accurately represent realworld objects but without too much details to distract user attentioncan be a challenge, particularly when generating graphical elements formore complex real world objects. This document describes techniques,systems, processes, and devices for consistently and accuratelygenerating maps with simplified graphical elements from variousdifferent map data sources, which can include data sources with complex,disjointed, and highly detailed data on real world objects.

For example, the layout of a retail store, including all of its aisles,shelving, racks, and other physical the aisles and other arrangements ina retail store can be represented by detailed data mapping the layouteach item in precise detail. However, this detailed data may have toomuch detail to be useful to guests (e.g., guests may have difficultlyreadily differentiating details on the map that are relevant to themfrom irrelevant map details). Generating simplified graphical elementsfor a map, which can be more useful to such guests, from detailed mapdata can be non-trivial for a variety of reasons. For example, somebounding algorithms may be relatively lightweight and suitable forrepresenting simple objects, but unsuitable for representing complexobjects. Some bounding algorithms, for example, may be suitable forrepresenting a variety of simple and complex objects, but such boundingalgorithms may be relatively computationally expensive. By selecting anappropriate bounding algorithm for an object based on attributes of theobject, for example, a representative shape can be generated for theobject using an appropriate amount of computing resources, and anaccurate map can be quickly and efficiently generated. Further, a maprepresentation can show an appropriate level of detail by reducingvisual clutter and extraneous detail.

In some implementations, a method may be performed by a graphicsprocessing computer system for generating simplified graphical maps. Themethod includes receiving map data that identifies a layout of physicalobjects within a physical area; identifying contiguous groups of thephysical objects as composite objects; selecting bounding algorithms touse for generating graphical shapes for the composite objects, thebounding algorithms being selected individually for each of thecomposite objects from among a plurality of bounding algorithms based oncharacteristics of each of the composite objects; generating graphicalshapes by applying the selected bounding algorithms to the compositeobjects; and testing the graphical shapes against one or more criteria.For candidate graphical shapes that fail, a new bounding algorithm isselected and the generating and the testing are repeated using the newbounding algorithm. The method may include outputting a simplifiedgraphical map that represents the physical objects within the physicalarea using the graphical shapes.

Other implementations of this aspect include corresponding computersystems, and include corresponding apparatus and computer programsrecorded on one or more computer storage devices, each configured toperform the actions of the methods. A system of one or more computerscan be configured to perform particular operations or actions by virtueof having software, firmware, hardware, or a combination of theminstalled on the system that in operation causes or cause the system toperform the actions. One or more computer programs can be configured toperform particular operations or actions by virtue of includinginstructions that, when executed by data processing apparatus, cause theapparatus to perform the actions.

These and other implementations may include any, all, or none of thefollowing features. Identifying the composite objects may includegenerating a spatial index of the physical objects; selecting a physicalobject from the among the physical objects; determining, using thespatial index, whether another physical object is within a thresholddistance of the selected physical object; in response to the otherphysical object being within the threshold distance, adding the otherphysical object to a composite object including the selected physicalobject; and selecting the other physical object and repeating thedetermining and the adding until no other physical objects aredetermined to be within the threshold distance of any shapes within thecomposite object. Selecting, for each of the composite objects, thebounding algorithms may include determining whether the composite objectis primarily diagonally oriented within the physical area, and selectinga convex hull bounding algorithm when the composite object is primarilydiagonally oriented, or otherwise selecting a bounding box algorithm.When the convex hull algorithm is selected and the composite objectfails the testing against the one or more criteria, the new boundingalgorithm that is selected may include a buffering bounding algorithm.The buffering bounding algorithm may include performing a bufferoperation on the composite object to generate a buffered compositeobject, performing a union operation on the buffered composite object togenerate a union composite object, and performing an unbuffer operationon the union composite object to generate the graphical shape for thecomposite object. For graphical shapes generated using the bufferingbounding algorithm, at least one of the one or more criteria testedagainst the graphical shape may be that the graphical shape must includeno more than one resulting shape to pass. When the buffering boundingalgorithm fails the testing against the one or more criteria, the newbounding algorithm that is selected may include the convex hull boundingalgorithm. When the bounding box algorithm is selected and the compositeobject fails the testing against the one or more criteria, the newbounding algorithm that is selected may include an orthogonal convexhull bounding algorithm. When the convex hull bounding algorithm isselected and the composite object fails the testing against the one ormore criteria, the new bounding algorithm that is selected may includethe buffering bounding algorithm. The buffering bounding algorithm mayinclude performing a buffer operation on the composite object togenerate a buffered composite object, performing a union operation onthe buffered composite object to generate a union composite object, andperforming an unbuffer operation on the union composite object togenerate the graphical shape for the composite object. For graphicalshapes generated using the buffering bounding algorithm, at least one ofthe one or more criteria tested against the graphical shape may be thatthe graphical shape must include no more than one resulting shape topass. When the buffering bounding algorithm fails the testing againstthe one or more criteria, the new bounding algorithm that is selectedmay be the orthogonal convex hull bounding algorithm. At least one ofthe one or more criteria tested against the graphical shape may includethe area of the graphical shape being within a threshold of the area ofthe composite object. The physical area may be a retail store and thephysical objects comprise aisles within the retail store. The outputtingmay include storing the simplified graphical map in one or more digitalfiles. The outputting may include presenting one or more graphicalindicators on the simplified graphical map, the one or more graphicalindicators representing one or more of a section location, an itemlocation, or a user location within the simplified graphical map.

The systems, devices, program products, and processes describedthroughout this document can, in some instances, provide one or more ofthe following advantages. A map may be automatically synchronized with aphysical space that the map represents, which may be useful whenfrequent changes are made to the space and/or when maps for many variousspaces are maintained. When rendering a map of a space, a visualrepresentation of a complex object in the space may be simplified toreduce visual clutter. By aggregating and simplifying objects, an amountof data needed for rendering a map may be reduced, improving networktransfer speed and improving rendering speed on a device that rendersthe map. Further, a different software application may be used to rendera map than a software application that was used to create it,potentially conserving computer storage space and processing power. Aspatial index that includes pre-generated and stored object positiondata can be accessed to quickly identify contiguous objects whengenerating a simplified composite object. By selecting a suitablebounding algorithm for generating a shape to represent an object,overall use of computing resources may be minimized while ensuring thatobjects are visually well-represented in a map.

Other features, aspects and potential advantages will be apparent fromthe accompanying description and figures.

DESCRIPTION OF DRAWINGS

FIG. 1 is a conceptual diagram of an example system for generatingsimplified map shapes for a map representation.

FIG. 2 shows an example process for generating simplified map shapes fora map representation.

FIG. 3 shows an example process for identifying contiguous objects frommap data and generating a composite object.

FIG. 4 shows an example process for selecting a bounding algorithm foran object and using the bounding algorithm to generate a shape.

FIG. 5 shows an example process for a bounding algorithm includingbuffer, union, and unbuffer operations.

FIG. 6 shows an example process for testing a shape.

FIGS. 7A-C show example applications of bounding algorithms to generateshapes based on primarily orthogonal objects.

FIGS. 8A-C show an example application of a bounding algorithm includingbuffer, union, and unbuffer operations to generate a shape based on anobject.

FIGS. 9A-C show example applications of bounding algorithms to generateshapes based on primarily diagonal objects.

FIG. 10 shows example map representations that include shapes havingbeen generated using different bounding algorithms.

FIG. 11 is a schematic diagram that shows an example of a computingsystem.

Like reference symbols in the various drawings indicate like elements

DETAILED DESCRIPTION

This document describes technology that can generate simplified mapshapes to represent objects in a map, using various different boundingalgorithms for different objects. In general, generating maps thatinclude an appropriate level of detail may be challenging, since mapsource data (e.g., computer design files used to map an indoor space)may include extraneous details that produce visual clutter when directlyrendered. For example, a store map may define various sections that makeup an aisle—such detail may be appropriate for some purposes (e.g.,providing a store design map on a large monitor to an employee), but notappropriate for others (e.g., providing a map on a mobile device screento a customer). Also, some bounding algorithms used for generatingshapes to represent objects in a map may produce accurate shapes, butmay be computationally expensive. To solve the problem of generatingmaps that include an appropriate level of detail while conservingcomputing resources, for example, an appropriate bounding algorithm canbe selected for an object based on attributes of the object, anddifferent bounding algorithms may be selected for different objects.Thus, representative shapes can be generated for objects using anappropriate amount of computing resources, and an accurate map can bequickly and efficiently generated.

FIG. 1 is a conceptual diagram of an example system 100 for generatingsimplified map shapes for a map representation. In the depicted example,the system 100 includes one or more graphics processing devices 102. Insome examples, the graphics processing device 102 can represent variousforms of computing servers, including, but not limited to networkservers, web servers, application servers, or a server farm. In someexamples, the graphics processing device 102 can represent various formsof computing devices including, but not limited to, a desktop computer,a laptop computer, a handheld computer, or a combination of two or moreof these computing devices or other computing devices. The graphicsprocessing device 102, for example, can receive map data from varioussources (e.g., databases, file systems, and/or cached data sources), canexecute software that processes the received map data, and can generateprocessed map data that may be used to render map representations thatinclude simplified map shapes.

Referring now to FIG. 2 , an example process 200 for generatingsimplified map shapes for a map representation is shown. The process 200can be performed by components of the system 100, for example, and willbe described with reference to FIG. 1 . However, other systems may beused to perform the same or similar process.

At box 202, map data is received. Referring to FIG. 1 , during stage(A), the graphics processing device 102 receives map data 104. Forexample, the map data 104 can include data that defines various objectswithin a mapped space, and can be received over a computing network froma map data source (e.g., a database, a file system, and/or a cached datasource, not shown). In some implementations, map data may be provided ina computer file format generated by a software application used fordesigning a mapped space. For example, the map data 104 can be acomputer-aided design (CAD) file, or another suitable computer file.

At box 204, contiguous objects are identified from the received mapdata. Referring again to FIG. 1 , during stage (B), the graphicsprocessing device 102 identifies objects in the map data 104. In someimplementations, map data may define lines and points that designate theoutlines and positions of objects in a mapped space. In someimplementations, map data may include metadata that designates objectclassifications for at least some of the objects defined in the mapdata. For example, the map data 104 can define the outlines, positions,and optional classifications of objects of various types (e.g.,sections, aisles, floor areas, walls, registers, and other suitabletypes) within an indoor mapped space such as a store or warehouse. Anaisle, for example, can include a series of contiguous sections forstoring items within a mapped space, each section having a definedposition and width (e.g., five feet, ten feet, or another suitablewidth) along the aisle. A floor area, for example, can be a defined areawithin a mapped space which may be associated with one or more types ofitems (e.g., clothing, groceries, or other item types). A register, forexample, can be a defined station area used for processing the items(e.g., scanning, packaging, or another sort of processing). Walls, forexample, can include defined interior and exterior walls of a mappedspace.

Referring again to FIG. 2 , a shape can be generated to represent acomposite object (e.g., multiple contiguous objects or a single object),and the shape can be used in a map representation. In general,generating a shape to represent an object can include identifyingcontiguous objects (or a single non-contiguous object) from map data(box 204, described in further detail with respect to FIG. 3 ),selecting a bounding algorithm for a composite object (box 206,described in further detail with respect to FIG. 4 ), using the selectedbounding algorithm to generate a shape (box 208, described in furtherdetail with respect to FIGS. 4 & 5 ), and testing the generated shape(box 210, described in further detail with respect to FIG. 6 ). If theshape is not within a threshold fit (box 212), a different boundingalgorithm can be selected for the object (box 206), and the process 200can iterate until an acceptable fit is determined for the shape withrespect to the object. If the shape is within a threshold fit, forexample, at box 214, the graphics processing device 102 can use theshape to represent the object in map representation 108 (shown in FIG. 1). In some implementations, a shape may be generated for a compositeobject after the composite object has been determined, beforedetermining other composite objects. In some implementations, shapes maybe generated for composite objects, after all of the composite objectsin a mapped space have been determined.

Referring again to FIG. 1 , during stage (C), the graphics processingdevice 102 generates simplified shapes for objects identified in the mapdata 104. In general, computer files generated by software applicationsfor designing mapped spaces (e.g., CAD files) may include many details,and may not be suitable for some purposes because of an amount of visualclutter that would result if a file were to be visually rendered. Forexample, a CAD file for a store map may include line segments for eachsection of an aisle. When rendering the store map for presentation to acustomer, for example, it may be preferable to provide a visualrepresentation of the aisle as a single object rather than visuallydefine each section of the aisle, to reduce visual clutter. Further,computer files generated by software applications for designing mappedspaces (e.g., CAD files) may be large because of an amount of dataneeded for rendering the many details defined in the files. Byaggregating and simplifying objects defined in the map data 104, forexample, an amount of data needed for rendering the store map may bereduced, improving network transfer speed and improving rendering speedon a device (e.g., a stationary or mobile computing device) that rendersthe store map. Further, software applications for creating and renderingmap files may use a significant amount of computer storage space andprocessing power, and by aggregating and simplifying objects defined inthe map data 104, for example, a different software application may beused to render a representation of the store map than the one thatcreated it—one that uses fewer computing resources.

Referring now to FIG. 3 , an example process 300 is shown foridentifying contiguous objects from map data and generating a compositeobject that includes the contiguous objects (corresponding to box 204 ofFIG. 2 ). At box 302, a spatial index is generated from the received mapdata. As shown in FIG. 1 , for example, the graphics processing device102 can generate spatial index 106 to include position data for objectsdefined in the received map data 104. For example, each object definedin the map data 104 can be associated with an object identifier andobject position data that designates the object's outline and positionwith respect to a mapped space. The object position data, for example,can define a set of lines and points according to a Cartesian coordinatesystem that includes x and y position values for the points, and lineconnections between the points. In some implementations, a centroidvalue may be calculated and indexed for each object. The spatial index106 (e.g., a database index, a file index, a cached index, or anothersuitable index), for example, can be generated and stored such that, forany given object, other objects that are close to the given object(e.g., within a configurable threshold distance) may be readilyidentified.

Referring now to FIG. 7A, example composite objects 700, 710, and 720are shown. Each of the example composite objects 700, 710, and 720includes multiple contiguous objects, however, in some examples, asingle object may be identified which may not be contiguous with anyother objects. Further, each of the contiguous objects included in thecomposite objects 700, 710, and 720 shown in the present example areprimarily orthogonal with respect to a coordinate system, however, othercontiguous objects may be identified which may be primarilynon-orthogonal (e.g., diagonal) with respect to the coordinate system.In the present example, composite object 700 includes contiguous objects702 a, 702 b, 702 c, etc., composite object 710 includes contiguousobjects 712 a, 712 b, etc., and composite object 720 includes contiguousobjects 722 a, 722 b, etc.

Referring again to FIG. 3 , at box 304, an object defined in the mapdata 104 is selected. In some implementations, an object may be selectedrandomly. In some implementations, an object may be selected accordingto its defined position within a mapped space. For example, a firstobject may be selected that is closest to a corner of the mapped space.As another example, a first object may be selected that is closest to acenter of the mapped space. As shown in FIG. 7A, for example, object 702a can be first selected by the graphics processing device 102. In thepresent example, object 702 a can represent a section of an aisle in astore.

At box 306, the graphics processing device 102 determines whether anyother objects are within a threshold distance of the selected object.The threshold distance, for example, can be a configurable distance(e.g., one inch, six inches, one foot, two feet, or another suitabledistance) between centers, points, or edges of objects according to acoordinate system of a mapped space in which the objects are located. Insome implementations, a definition of a threshold distance betweenobjects may vary depending on an object's classification, anddetermining whether any other objects are within the threshold distanceof the selected object may include identifying the selected object'sclassification and the corresponding threshold distance for objects ofthat classification. For example, a threshold distance between objectsof one type (e.g., sections) can be of a first value, and a thresholddistance between objects of another type (e.g., floor areas) can be of asecond, different value. In the present example, the graphics processingdevice 102 identifies object 702 a as a section (e.g. based on metadataassociated with the object), identifies a corresponding thresholddistance for section objects, and determines that objects 702 b and 702c (e.g., other sections) are within the threshold distance. For example,the graphics processing device 102 can access the spatial index 106(shown in FIG. 1 ), and can quickly identify other objects within thethreshold distance based on the pre-generated and stored object positiondata.

At box 308, after determining that one or more objects are within athreshold distance of a selected object, the adjacent object(s) areadded to the selected object. For example, the graphics processingdevice 102 can maintain a data structure (e.g., a list, an array, acollection, or another suitable data structure) that stores objectidentifiers for contiguous objects that are included in a compositeobject. In the present example, adjacent objects 702 b and 702 c can beadded to a data structure associated with the composite object 700,along with the selected object 702 a.

At box 310, an adjacent object is selected. In the present example, thegraphics processing device 102 can select one of the adjacent objects702 b or 702 c. After selecting one of the adjacent objects 702 a or 702b, for example, the graphics processing device 102 can determine whetherany other objects (e.g., objects that have not yet been added to thedata structure associated with composite object 700) are within athreshold distance of the selected adjacent object, and the process 300for identifying contiguous objects can iterate until all contiguousobjects have been identified for the composite object 700.

After determining that no remaining objects are within a thresholddistance of a selected object, a collection of objects can be saved as acomposite object at box 312. In the present example, the graphicsprocessing device 102 can save the contiguous objects 702 a, 702 b, 702c, etc., (e.g., sections) as composite object 700 (e.g., an aisle). Insome examples, a single object can be saved as a composite object.

At box 314, the graphics processing device 102 determines whether anyother objects (e.g., objects that have not yet been included as part ofa composite object) are defined in the map data 104. Referring again toFIG. 7A, for example, object 712 a can be selected by the graphicsprocessing device 102 (at box 304), and the process 300 can iterateuntil all contiguous objects 712 b, etc., have been added to and savedas composite object 710. Similarly, object 722 a can be selected, andthe process 300 can iterate until all contiguous objects 722 b, etc.,have been added to and saved as composite object 720.

At box 316, after determining that no other objects remain, the process300 for identifying contiguous objects may be complete. For example, thegraphics processing device 102 can determine that all of the objectsdefined in the map data 104 and/or identified in the spatial index 106have been saved as part of a composite object (which may includemultiple contiguous objects or may be a single object).

Referring now to FIG. 4 , an example process 400 is shown for selectinga bounding algorithm for an object and using the bounding algorithm togenerate a shape to represent the object in a map representation(corresponding to box 206 of FIG. 2 ). In general, different boundingalgorithms may be appropriate for generating shapes for representingdifferent objects. Some simple objects may be visually well-representedusing simple bounding algorithms that may be efficiently performed bythe graphics processing device 102, for example. Some complex objects,however, may not be visually well-represented using simple boundingalgorithms, but may be better represented by more complex boundingalgorithms that use more processing resources. By selecting a suitablebounding algorithm for generating a shape to represent an object, forexample, overall use of processing resources may be minimized whileensuring that objects are visually well-represented in a maprepresentation.

At box 402, the graphics processing device 102 determines whether acomposite object is primarily diagonal or orthogonal. In someimplementations, a determination of whether a composite object isprimarily diagonal or orthogonal may be based on analyzing linesincluded in the composite object with respect to a coordinate system.For example, the graphics processing device 102 can count a number oflines that are oriented in a mapped space within a threshold tolerancevalue (e.g., one degree, five degrees, ten degrees, or another suitabletolerance value) of one of the axes of a coordinate system of the mappedspace (e.g., either an x axis or a y axis). If a predeterminedpercentage (e.g., 50%, 80%, 90%, or another suitable value) of the linesof the composite object are orthogonal with respect to the coordinatesystem, for example, the object may be classified as being primarilyorthogonal, whereas if the predetermined percentage value is not met,the object may be classified as being primarily diagonal. Referringagain to FIG. 7A, for example, the composite objects 700, 710, and 720are primarily orthogonal objects.

At box 404, if a composite object is not primarily diagonal (e.g., theobject is primarily orthogonal), a bounding box algorithm is applied tothe object. In some implementations, a bounding box algorithm mayinclude determining a minimum bounding rectangle that includes allpoints of an object. Referring now to FIG. 7B, for example, using thebounding box algorithm, shape 704 can be generated by the graphicsprocessing device 102 for composite object 700 (e.g., a straight aislethat includes contiguous sections), shape 714 can be generated forcomposite object 710 (e.g., an L-shaped aisle that includes contiguoussections), and shape 724 can be generated for composite object 720(e.g., a refrigeration aisle that includes contiguous sections andendcaps).

Referring again to FIG. 4 , at box 406, the graphics processing device102 tests a generated shape to determine whether the shape is within athreshold fit with respect to an object which the shape represents.Referring now to FIG. 6 , an example process 600 for testing a shape isshown.

At box 602, the areas of each object in a composite object areaggregated. Referring again to FIG. 7A, for example, the areas ofcontiguous objects 702 a, 702 b, 702 c, etc., are aggregated forcomposite object 700. Similarly, the areas of contiguous objects 712 a,712 b, etc., are aggregated for composite object 710. In the presentexample, the areas of contiguous objects 722 a (e.g., an endcap), 722 b(e.g., a section), etc., are aggregated for composite object 720 (e.g.,a refrigeration aisle), however, area 728 (e.g., a void area whichhouses electrical components) may not be included in the areaaggregation.

At box 604, an area of a generated shape is determined. Referring againto FIG. 7B, for example, the areas of shape 704 (e.g., generated forcomposite object 700), shape 714 (e.g., generated for composite object710), and shape 724 (e.g., generated for composite object 720) can bedetermined.

At box 606, the graphics processing device 102 determines whether ashape that has been generated to represent a composite object is withina threshold fit of the composite object. In some implementations,determining whether a generated shape is within a threshold fit mayinclude determining whether an area of the shape is within apredetermined threshold difference (e.g., 10%, 20%, 30%, or anothersuitable value) of an aggregated area of contiguous objects in acomposite object that the shape represents.

At box 608, a shape passes the testing process 600 when the shape iswithin a threshold fit of its corresponding composite object. Referringagain to FIG. 7B, for example, the shape 704 is within a threshold fitof the composite object 700, and is thus a suitable representation forthe object.

At box 610, a shape fails the testing process 600 when the shape is notwithin a threshold fit of its corresponding composite object. Referringagain to FIG. 7B, for example, the shape 714 is not within a thresholdfit of the composite object 710, and the shape 724 is not within athreshold fit of the composite object 720, and thus neither shape is asuitable representation of its corresponding object.

Referring again to FIG. 4 , for example, the process 400 for selecting abounding algorithm for the composite object 700 (e.g., the straightaisle that includes contiguous sections) and using the selected boundingalgorithm to generate a shape to represent the object is complete (box408). Thus, in the present example, the shape 704 (shown in FIG. 7B) maybe used to represent the composite object 700 in a representation of amapped space that includes the object (e.g., map representation 108,shown in FIG. 1 ). However, for composite objects 710 and 720, theprocess 400 continues, and different bounding algorithms may be testedand possibly used for generating shapes to represent the objects.

At box 410, an orthogonal convex hull bounding algorithm is applied toan object. In some implementations, the orthogonal convex hull boundingalgorithm may include computing a rectilinear convex hull that enclosesa set of objects included in a composite object. Referring now to FIG.7C, for example, using the orthogonal convex hull bounding algorithm,shape 716 can be generated for composite object 710, and shape 726 canbe generated for composite object 720.

Referring again to FIG. 4 , at box 412, the graphics processing device102 tests a generated shape to determine whether the shape is within athreshold fit with respect to an object which the shape represents,according to the process 600 (shown in FIG. 6 ). In the present example,the shape 716 (shown in FIG. 7C) is within a threshold fit of thecomposite object 710 (also shown in FIG. 7C), and is thus a suitablerepresentation for the object. Thus, the process 400 for selecting abounding algorithm for the composite object 710 (e.g., the L-shapedaisle that includes contiguous sections) and using the selected boundingalgorithm to generate a shape to represent the object is complete (box408). However, in the present example, the shape 726 (shown in FIG. 7C)is not within a threshold fit of the composite object 720, thus theprocess 400 continues for that object, and different bounding algorithmsmay be tested and possibly used for generating a shape to represent theobject.

At box 414, a bounding algorithm that includes buffer, union, andunbuffer operations is applied to an object. Referring now to FIG. 5 ,an example process 500 for a bounding algorithm including buffer, union,and unbuffer (and optionally, simplify) operations is shown. Althoughthe example process 500 may be a computationally expensive processrelative to some other bounding algorithms (e.g., a bounding boxalgorithm), the process 500 may be selectively applied to generateshapes that accurately represent complex objects, when other boundingalgorithms fail to produce satisfactory results.

At box 502, a composite object is accessed. For example, the graphicsprocessing device 102 can generate access the composite object 720(e.g., a refrigeration aisle that includes contiguous sections andendcaps) to generate and test a shape to represent the object.

At box 504, a buffer operation is performed on contiguous objectsincluded in a composite object. In some implementations, buffering anobject may include moving the edges of an object away from the object'scenter by a predetermined distance (e.g., one inch, six inches, onefoot, two feet, or another suitable distance). Referring now to FIG. 8A,for example, the graphics processing device 102 can perform a bufferingoperation on object 722 a (e.g., an endcap), such that the edges ofobject 722 a are extended to object border 822 a, and can perform abuffering operation on object 722 b (e.g., a section), such that theedges of object 722 b are extended to object border 822 b. Similarly,the graphics processing device 102 can perform a buffering operation onthe other contiguous objects included in the composite object 720.

At box 506, a union operation is performed on buffered contiguousobjects of a composite object. Referring now to FIG. 8B, for example,the graphics processing device 102 can perform a union operation thatcombines shapes that are overlapping or touching (e.g., shapes thatrepresent the buffered objects 722 a, 722 b, etc., having correspondingextended object borders 822 a, 822 b, etc. In the present example, theunion operation results in a united composite object having a border830.

At box 508, an unbuffer operation is performed on a united compositeobject. In some implementations, unbuffering (e.g., shrinking) an objectmay include moving the edges of an object toward the object's center bya predetermined distance (e.g., one inch, six inches, one foot, twofeet, or another suitable distance) that had been applied in previousbuffering operations, such that the effect of the previously performedbuffering operations are reversed. Referring now to FIG. 8C, forexample, the graphics processing device 102 can perform an unbufferoperation on the united composite object having the border 830 (shown inFIG. 8B) to generate shape 840 which represents the composite object720.

At box 510, a simplify operation is optionally performed on a compositeobject after it has been unbuffered, or is optionally performed as partof performing an unbuffering operation. For example, the simplifyoperation may include determining whether a composite object isrepresented by a complex shape (e.g., based on the shape having a numberof points that meets a threshold number of points). If the compositeobject is represented by a complex shape, for example, simplifying thecomplex shape may include generating a simplified polygon that has fewervisual prominences (e.g., by including fewer points).

Referring again to FIG. 4 , the graphics processing device 102determines at box 416 whether more than one shape has been generated bythe bounding algorithm that includes buffer, union, and unbufferoperations. If more than one shape has been generated, at box 418 theshape that has been previously generated using the orthogonal convexhull bounding algorithm (e.g., at box 410) may be used to represent acomposite object (e.g., shape 724 may be used to represent compositeobject 720, shown in FIG. 7B). If only one shape has been generated, theshape that has been generated by the bounding algorithm that includesbuffer, union, and unbuffer operations (e.g., shape 840, shown in FIG.8C) may be used to represent the composite object. In either scenario,the process 400 for selecting a bounding algorithm for the compositeobject 720 is complete (box 408).

Returning to box 402, the graphics processing device 102 determineswhether a composite object is primarily diagonal or orthogonal.Referring now to FIG. 9A, for example, composite object 900 andcomposite object 910 are identified as being primarily diagonal objects.In the present example, composite object 900 (e.g., adiagonally-orientated series of contiguous sections) includes sections902 a, 902 b, etc., and composite object 910 (e.g., a pair of adjacentdiagonally-oriented series of contiguous sections) includes sections 912a, 912 b, 912 c, etc.

At box 420, if a composite object is primarily diagonal (e.g., theobject is not primarily orthogonal), a convex hull algorithm bounding isapplied to the object. In some implementations, a convex hull boundingalgorithm may include determining a convex polygon that encloses a setof objects included in a composite object. Referring now to FIG. 9B, forexample, using the convex hull bounding algorithm, shape 904 can begenerated for composite object 900, and shape 914 can be generated forcomposite object 910. In some implementations, a composite object thatis primarily diagonal may be rotated, an orthogonal convex hullalgorithm may be applied to the object, and the resulting shape may berotated back to an original position of the composite object.

Referring again to FIG. 4 , at box 422, the graphics processing device102 tests a generated shape to determine whether the shape is within athreshold fit with respect to an object which the shape represents,according to the process 600 (shown in FIG. 6 ). In the present example,the shape 904 (shown in FIG. 9B) is within a threshold fit of thecomposite object 900 (also shown in FIG. 9B), and is thus a suitablerepresentation for the object. Thus, the process 400 for selecting abounding algorithm for the composite object 900 (e.g., thediagonally-orientated series of contiguous sections) and using theselected bounding algorithm to generate a shape to represent the objectis complete (box 408). However, in the present example, the shape 914(shown in FIG. 9B) is not within a threshold fit of the composite object910, thus the process 400 continues for that object, and differentbounding algorithms may be tested and possibly used for generating ashape to represent the object.

At box 424, a bounding algorithm that includes buffer, union, andunbuffer operations is applied to an object, according to the exampleprocess 500 described herein with respect to FIG. 5 . Referring now toFIG. 9C, for example, the graphics processing device 102 can generatethe shape 924 to represent the composite object 910 using the boundingalgorithm that includes buffer, union, and unbuffer operations.

Referring again to FIG. 4 , the graphics processing device 102determines at box 426 whether more than one shape has been generated bythe bounding algorithm that includes buffer, union, and unbufferoperations. If more than one shape has been generated, at box 428 theshape that has been previously generated using the convex hull boundingalgorithm (e.g., at box 420) may be used to represent a composite object(e.g., shape 914 may be used to represent composite object 910, shown inFIG. 9B). If only one shape has been generated, the shape that has beengenerated by the bounding algorithm that includes buffer, union, andunbuffer operations (e.g., shape 924, shown in FIG. 9C) may be used torepresent the composite object. In either scenario, the process 400 forselecting a bounding algorithm for the composite object 910 is complete(box 408).

Referring again to FIG. 2 , at box 214, a generated shape can be used torepresent a composite object in a map representation. As shown in FIG. 1, during stage (D), for example, the graphics processing device 102 caninclude the generated shape in map representation 108, along with othershapes that have been generated to represent other composite objects.The map representation 108, for example, can include shape data that canbe used by a requestor computing device (not shown) to graphicallyrender a map. As another example, the map representation 108 cangraphically render a map, and may provide the map representation 108 asa rendered image. In some implementations, one or more graphicalindicators (e.g., labels, icons, markers, or other suitable indicators)may be added to a map representation. For example, the graphicsprocessing device 102 (or another device) can add one or more graphicalindicators to the map representation 108 that identify sections withinthe map (e.g., store departments), identify locations of items withinthe map (e.g., queried products), identify locations of individualswithin the map (e.g., map users), or other suitable indicators. In someimplementations, item and/or user location information may be used tofacilitate user routing and navigation throughout a mapped space, and/orto facilitate locating items in the mapped space. For example, acomputing device that presents the map representation 108 to a user canalso provide the user's location, an item location, and routinginformation that directs the user to the item.

Referring now to FIG. 10 , example map representations are shown thatinclude shapes having been generated using different boundingalgorithms. Map representation 1000, for example, represents a mappedarea (e.g., a store, a warehouse, or another mapped area) and includesvarious different simplified shapes that have been generated torepresent various different composite objects within the mapped area,according to techniques described above for selecting a suitablebounding algorithm for an object and generating a shape using theselected bounding algorithm. Map representation 1000, for example, showsan appropriate level of detail for some purposes (e.g., providing a mapto a store customer), by reducing visual clutter and extraneous detailthat would result if the representation were to be rendered by directlyusing unprocessed map source data.

Each shape included in the map depicted in example map representation1000 has been generated using an appropriate bounding algorithm—withshapes that represent relatively simple objects having been generatedusing relatively lightweight bounding algorithms, and shapes thatrepresent relatively complex objects having been generated usingbounding algorithms that are relatively computationally expensive. Maprepresentation 1010, for example, has been generated using a boundingalgorithm that includes buffer, union, and unbuffer operations toaccurately generate shapes for all objects within a map (e.g., includingcomplex shape 1012, representing a set of adjacent aisles, and simplershapes representing single aisles). In the present example, maprepresentation 1000 appears substantially similar to map representation1010, however map representation 1000 can be generated more quickly andusing fewer computing resources than map representation 1000, byselecting suitable different bounding algorithms for differentrepresented objects.

Further, some bounding representations may not be suitable for somecomplex shapes. Map representation 1020, for example, has been generatedusing a bounding box algorithm to generate shapes for all objects with amap, which may be appropriate for some simple objects, however somecomplex objects may result in overly large shapes that lack detailand/or that obscure other shapes within a map (e.g., shape 1022). Maprepresentation 1030, for example, has been generated using a convex hullbounding algorithm to generate shapes for all objects within a map,which may also be appropriate for some simple objects, but for somecomplex objects may also result in overly large shapes that lack detailand/or obscure other shapes (e.g., shape 1032). Map representation 1040,for example, has been generated using an orthogonal convex hull boundingalgorithm to generate shapes for all objects within a map, which mayalso be appropriate for some simple objects, but for some complexobjects may also result in overly large shapes that lack detail and/orobscure other shapes (e.g., shape 1042).

FIG. 11 is a schematic diagram that shows an example of a computingsystem 1100. The computing system 1100 can be used for some or all ofthe operations described previously, according to some implementations.The computing system 1100 includes a processor 1110, a memory 1120, astorage device 1130, and an input/output device 1140. Each of theprocessor 1110, the memory 1120, the storage device 1130, and theinput/output device 1140 are interconnected using a system bus 1150. Theprocessor 1110 is capable of processing instructions for executionwithin the computing system 1100. In some implementations, the processor1110 is a single-threaded processor. In some implementations, theprocessor 1110 is a multi-threaded processor. The processor 1110 iscapable of processing instructions stored in the memory 1120 or on thestorage device 1130 to display graphical information for a userinterface on the input/output device 1140.

The memory 1120 stores information within the computing system 1100. Insome implementations, the memory 1120 is a computer-readable medium. Insome implementations, the memory 1120 is a volatile memory unit. In someimplementations, the memory 1120 is a non-volatile memory unit.

The storage device 1130 is capable of providing mass storage for thecomputing system 1100. In some implementations, the storage device 1130is a computer-readable medium. In various different implementations, thestorage device 1130 may be a floppy disk device, a hard disk device, anoptical disk device, or a tape device.

The input/output device 1140 provides input/output operations for thecomputing system 1100. In some implementations, the input/output device1140 includes a keyboard and/or pointing device. In someimplementations, the input/output device 1140 includes a display unitfor displaying graphical user interfaces.

Some features described can be implemented in digital electroniccircuitry, or in computer hardware, firmware, software, or incombinations of them. The apparatus can be implemented in a computerprogram product tangibly embodied in an information carrier, e.g., in amachine-readable storage device, for execution by a programmableprocessor; and method steps can be performed by a programmable processorexecuting a program of instructions to perform functions of thedescribed implementations by operating on input data and generatingoutput. The described features can be implemented advantageously in oneor more computer programs that are executable on a programmable systemincluding at least one programmable processor coupled to receive dataand instructions from, and to transmit data and instructions to, a datastorage system, at least one input device, and at least one outputdevice. A computer program is a set of instructions that can be used,directly or indirectly, in a computer to perform a certain activity orbring about a certain result. A computer program can be written in anyform of programming language, including compiled or interpretedlanguages, and it can be deployed in any form, including as astand-alone program or as a module, component, subroutine, or other unitsuitable for use in a computing environment.

Suitable processors for the execution of a program of instructionsinclude, by way of example, both general and special purposemicroprocessors, and the sole processor or one of multiple processors ofany kind of computer. Generally, a processor will receive instructionsand data from a read-only memory or a random access memory or both. Theessential elements of a computer are a processor for executinginstructions and one or more memories for storing instructions and data.Generally, a computer will also include, or be operatively coupled tocommunicate with, one or more mass storage devices for storing datafiles; such devices include magnetic disks, such as internal hard disksand removable disks; magneto-optical disks; and optical disks. Storagedevices suitable for tangibly embodying computer program instructionsand data include all forms of non-volatile memory, including by way ofexample semiconductor memory devices, such as EPROM (erasableprogrammable read-only memory), EEPROM (electrically erasableprogrammable read-only memory), and flash memory devices; magnetic diskssuch as internal hard disks and removable disks; magneto-optical disks;and CD-ROM (compact disc read-only memory) and DVD-ROM (digitalversatile disc read-only memory) disks. The processor and the memory canbe supplemented by, or incorporated in, ASICs (application-specificintegrated circuits).

To provide for interaction with a user, some features can be implementedon a computer having a display device such as a CRT (cathode ray tube)or LCD (liquid crystal display) monitor for displaying information tothe user and a keyboard and a pointing device such as a mouse or atrackball by which the user can provide input to the computer.

Some features can be implemented in a computer system that includes aback-end component, such as a data server, or that includes a middlewarecomponent, such as an application server or an Internet server, or thatincludes a front-end component, such as a client computer having agraphical user interface or an Internet browser, or any combination ofthem. The components of the system can be connected by any form ormedium of digital data communication such as a communication network.Examples of communication networks include, e.g., a LAN (local areanetwork), a WAN (wide area network), and the computers and networksforming the Internet.

The computer system can include clients and servers. A client and serverare generally remote from each other and typically interact through anetwork, such as the described one. The relationship of client andserver arises by virtue of computer programs running on the respectivecomputers and having a client-server relationship to each other.

What is claimed is:
 1. A method for generating simplified graphicalmaps, the method comprising: receiving, at a graphics processingcomputer system, map data that identifies a layout of physical objectswithin a physical area; identifying, by the graphics processing computersystem, contiguous groups of the physical objects as composite objects;selecting, by the graphics processing computer system, boundingalgorithms to use for generating graphical shapes for the compositeobjects, wherein the bounding algorithms are selected individually foreach of the composite objects from among a plurality of boundingalgorithms based on characteristics of each of the composite objects,wherein at least one bounding algorithm selected for at least onecomposite object comprises a buffering bounding algorithm; generating,by the graphics processing computer system, graphical shapes by applyingthe selected bounding algorithms to the composite objects, whereinapplying the buffering bounding algorithm to the at least one compositeobject comprises (i) performing a buffer operation on the at least onecomposite object to generate a buffered composite object, (ii)performing a union operation on the buffered composite object togenerate a union composite object, and (iii) performing an unbufferoperation on the union composite object to generate a graphical shapefor the at least one composite object; testing, by the graphicsprocessing computer system, the graphical shapes against one or morecriteria, wherein for graphical shapes generated using the bufferingbounding algorithm, at least one of the one or more criteria testedagainst the graphical shape is that the graphical shape must include nomore than one resulting shape to pass, wherein for candidate graphicalshapes that fail, a new bounding algorithm is selected and thegenerating and the testing are repeated using the new boundingalgorithm; and outputting, by the graphics processing computer system, asimplified graphical map that represents the physical objects within thephysical area using the graphical shapes.
 2. The method of claim 1,wherein identifying the composite objects comprises: generating aspatial index of the physical objects; selecting a physical object fromthe among the physical objects; determining, using the spatial index,whether another physical object is within a threshold distance of theselected physical object; in response to the other physical object beingwithin the threshold distance, adding the other physical object to acomposite object including the selected physical object; and selectingthe other physical object and repeating the determining and the addinguntil no other physical objects are determined to be within thethreshold distance of any shapes within the composite object.
 3. Themethod of claim 1, wherein selecting, for each of the composite objects,the bounding algorithms comprises: determining whether the compositeobject is primarily diagonally oriented within the physical area; andselecting a convex hull bounding algorithm when the composite object isprimarily diagonally oriented or otherwise selecting a bounding boxalgorithm.
 4. The method of claim 3, wherein when the convex hullbounding algorithm is selected and the composite object fails thetesting against the one or more criteria, the new bounding algorithmthat is selected comprises the buffering bounding algorithm.
 5. Themethod of claim 4, wherein when the buffering bounding algorithm failsthe testing against the one or more criteria, the new bounding algorithmthat is selected comprises the convex hull bounding algorithm.
 6. Themethod of claim 3, wherein when the bounding box algorithm is selectedand the composite object fails the testing against the one or morecriteria, the new bounding algorithm that is selected comprises anorthogonal convex hull bounding algorithm.
 7. The method of claim 6,wherein when the orthogonal convex hull bounding algorithm is selectedand the composite object fails the testing against the one or morecriteria, the new bounding algorithm that is selected comprises thebuffering bounding algorithm.
 8. The method of claim 7, wherein when thebuffering bounding algorithm fails the testing against the one or morecriteria, the new bounding algorithm that is selected comprises theorthogonal convex hull bounding algorithm.
 9. The method of claim 1,wherein performing the buffer operation on the at least one compositeobject comprises moving the edges of the at least one composite objectaway from the center of the at least one composite object by apredetermined distance.
 10. The method of claim 1, wherein performingthe union operation on the buffered composite object comprises combiningshapes of the buffered composite object that are overlapping ortouching.
 11. The method of claim 1, wherein performing the unbufferoperation on the union composite object comprises moving the edges ofthe union composite object toward the center of the union compositeobject by a predetermined distance.
 12. The method of claim 1, whereinapplying the buffering bounding algorithm to the at least one compositeobject further comprises generating a simplified polygon that has fewervisual prominences than the graphical shape generated for the at leastone composite object.
 13. The method of claim 1, wherein at least one ofthe one or more criteria tested against the graphical shape comprise thearea of the graphical shape being within a threshold of the area of thecomposite object.
 14. The method of claim 1, wherein the outputtingincludes presenting one or more graphical indicators on the simplifiedgraphical map, the one or more graphical indicators representing one ormore of a section location, an item location, or a user location withinthe simplified graphical map.
 15. A computer system comprising: a dataprocessing apparatuses including one or more processors, memory, andstorage devices storing instructions that, when executed, cause the oneor more processors to perform operations comprising: receiving, at agraphics processing computer system, map data that identifies a layoutof physical objects within a physical area; identifying, by the graphicsprocessing computer system, contiguous groups of the physical objects ascomposite objects; selecting, by the graphics processing computersystem, bounding algorithms to use for generating graphical shapes forthe composite objects, wherein the bounding algorithms are selectedindividually for each of the composite objects from among a plurality ofbounding algorithms based on characteristics of each of the compositeobjects, wherein at least one bounding algorithm selected for at leastone composite object comprises a buffering bounding algorithm;generating, by the graphics processing computer system, graphical shapesby applying the selected bounding algorithms to the composite objects,wherein applying the buffering bounding algorithm to the at least onecomposite object comprises (i) performing a buffer operation on the atleast one composite object to generate a buffered composite object, (ii)performing a union operation on the buffered composite object togenerate a union composite object, and (iii) performing an unbufferoperation on the union composite object to generate a graphical shapefor the at least one composite object; testing, by the graphicsprocessing computer system, the graphical shapes against one or morecriteria, wherein for graphical shapes generated using the bufferingbounding algorithm, at least one of the one or more criteria testedagainst the graphical shape is that the graphical shape must include nomore than one resulting shape to pass, wherein for candidate graphicalshapes that fail, a new bounding algorithm is selected and thegenerating and the testing are repeated using the new boundingalgorithm; and outputting, by the graphics processing computer system, asimplified graphical map that represents the physical objects within thephysical area using the graphical shapes.
 16. The computer system ofclaim 15, wherein identifying the composite objects comprises:generating a spatial index of the physical objects; selecting a physicalobject from the among the physical objects; determining, using thespatial index, whether another physical object is within a thresholddistance of the selected physical object; in response to the otherphysical object being within the threshold distance, adding the otherphysical object to a composite object including the selected physicalobject; and selecting the other physical object and repeating thedetermining and the adding until no other physical objects aredetermined to be within the threshold distance of any shapes within thecomposite object.
 17. The computer system of claim 15, wherein theoutputting includes presenting one or more graphical indicators on thesimplified graphical map, the one or more graphical indicatorsrepresenting one or more of a section location, an item location, or auser location within the simplified graphical map.
 18. A non-transitorycomputer-readable storage medium coupled to one or more processors andhaving instructions stored thereon which, when executed by the one ormore processors, cause the one or more processors to perform operationscomprising: receiving, at a graphics processing computer system, mapdata that identifies a layout of physical objects within a physicalarea; identifying, by the graphics processing computer system,contiguous groups of the physical objects as composite objects;selecting, by the graphics processing computer system, boundingalgorithms to use for generating graphical shapes for the compositeobjects, wherein the bounding algorithms are selected individually foreach of the composite objects from among a plurality of boundingalgorithms based on characteristics of each of the composite objects,wherein at least one bounding algorithm selected for at least onecomposite object comprises a buffering bounding algorithm; generating,by the graphics processing computer system, graphical shapes by applyingthe selected bounding algorithms to the composite objects, whereinapplying the buffering bounding algorithm to the at least one compositeobject comprises (i) performing a buffer operation on the at least onecomposite object to generate a buffered composite object, (ii)performing a union operation on the buffered composite object togenerate a union composite object, and (iii) performing an unbufferoperation on the union composite object to generate a graphical shapefor the at least one composite object; testing, by the graphicsprocessing computer system, the graphical shapes against one or morecriteria, wherein for graphical shapes generated using the bufferingbounding algorithm, at least one of the one or more criteria testedagainst the graphical shape is that the graphical shape must include nomore than one resulting shape to pass, wherein for candidate graphicalshapes that fail, a new bounding algorithm is selected and thegenerating and the testing are repeated using the new boundingalgorithm; and outputting, by the graphics processing computer system, asimplified graphical map that represents the physical objects within thephysical area using the graphical shapes.
 19. The non-transitorycomputer-readable storage medium of claim 18, wherein identifying thecomposite objects comprises: generating a spatial index of the physicalobjects; selecting a physical object from the among the physicalobjects; determining, using the spatial index, whether another physicalobject is within a threshold distance of the selected physical object;in response to the other physical object being within the thresholddistance, adding the other physical object to a composite objectincluding the selected physical object; and selecting the other physicalobject and repeating the determining and the adding until no otherphysical objects are determined to be within the threshold distance ofany shapes within the composite object.
 20. The non-transitorycomputer-readable storage medium of claim 18, wherein the outputtingincludes presenting one or more graphical indicators on the simplifiedgraphical map, the one or more graphical indicators representing one ormore of a section location, an item location, or a user location withinthe simplified graphical map.